<?php
class Model_Dimension extends Zend_Db_Table_Abstract
{
    protected $_name = 'dimension';

    public function getPaginator($filters = array(), $sort = null, $page = 1, $rowCount = null)
    {
        // get select query
        $select = $this->select ();
        if ($filters != null)
        {
            if (is_array ( $filters ))
            {
                foreach ( $filters as $key => $val )
                    $select->where ( $key, $val );
            }
            else
            {
                $select->where ( $filters );
            }
        }
        
        if ($sort != null)
            $select->order ( $sort );
            
        // get adapter
        $adapter = new Zend_Paginator_Adapter_DbTableSelect ( $select );
        
        // get paginator
        $paginator = new Zend_Paginator ( $adapter );
        $paginator->setItemCountPerPage ( $rowCount );
        $paginator->setCurrentPageNumber ( $page );
        
        return $paginator;
    }

    public function getList($filters = array(), $sort = null, $page = null, $rowCount = null)
    { 
        $select = $this->select ();
        if ($filters != null)
        {
            if (is_array ( $filters ))
            {
                foreach ( $filters as $key => $val )
                    $select->where ( $key, $val );
            }
            else
            {
                $select->where ( $filters );
            }
        }
        
        if ($page != null)
            $select->limitPage ( $page, $rowCount );
        
        if ($sort != null)
            $select->order ( $sort );
            
        return $this->fetchAll ( $select );
    }
    
    public function createDimension($dimValue)
    {
        // create a new row in the table
        $row = $this->createRow ();
       
        // set the row data
        $row->dim_value = $dimValue;
        
        // save the new row
        $row->save ();
        
        // now fetch the id of the row you just created and return it 
        $id = $row->dim_id; //$this->_db->lastInsertId();
        return $id;
    }
    
    public function updateDimension($id, $dimValue)
    {
        // find the row that matches the id
        $row = $this->find ( $id )->current ();
        if ($row)
        {
            // set the row data
            $row->dim_value = $dimValue;
            
            // save the new row
            $row->save ();
            return true;
        }
        else
        {
            throw new Zend_Exception ( "Update function failed; could not find row!" );
        }
    }

    public function deleteDimension($id)
    {
        // find the row that matches the id
        $row = $this->find ( $id )->current ();
        if ($row)
        {
            $row->delete ();
            return true;
        }
        else
        {
            throw new Zend_Exception ( "Delete function failed; could not find row!" );
        }
    }
}
?>
